23

» WarCraft 3 / Улучшение юнита

Похожие вопросы:

ответ
Да чего вы чушь на уши льете человеку. Ты должен дать юниту способность-пустышку, допустим - веерный бросок, но все параметры, типо урона и радиуса действия сотри, напиши описание. Маны способность не будет стоить, но в описании ты укажешь, сколько золота стоит улучшение. Итак, структура триггера на словах.
  1. Событие:
-Юнит приводит способность в действие
  1. Условие:
-Тип юнита: пехотинец (поищи, найдешь).
  1. Действия:
Если применяющая способность равна Бандит, то
-Боевая единица: удалить применяющий юнит
-Боевая единица: создать бандита (позиция применяющий юнит, владелец применяющий юнит, и т.п.)
-Игрок: вычесть столько то золота
Иначе ничего не делать
Если применяющая способность равна Рыцарь, то
Делать тоже самое, только создай рыцаря, вычитай другое кол-во золота.
Иначе ничего не делать
P.S: можно использовать переменную типа юнит, однако желательно локальную, если ты знаешь, что это. Хотя я не могу быть уверен, что переменная как-то сильно поможет, можно обойтись и без нее.
Кстати, увидел, что человек выше написал функцию заменить юнита на другого, не помню ее, но может она и есть, тогда вместо удаления и добавления нового юнита лучше воспользоваться заменой.
ответ
у меня не улучшение как таковое а "Улучшается ДО" , никогда с этими улучшениями дела не имел, а как у других? Продавать юнита и при продаже подменять, чтобы проапгрейдить, мне кажется эта вещь должна нормально работать в варе же, неужели все тдшки и всякие петры на другой системе сделаны?
По своей проблеме разобрался, в РО карта путей стоял пункт "Нет" у башни 1, именно это и вызывало фатал при отмене улучшения
ответ
ну дай фриз юниту просто
но это не только убор скорости, это убор вообще всего, это по сути превращение в овоща со слюнями изо рта до момента, пока ты не заанпауишь юнита

если не покатит, то устраивай клоунаду
ройся в стандартных абилках
можешь вот как с яйцом предложили, можешь безэффектный баш швырять в лицо ублюдку (хотя это тоже фриз будет тащемта), можешь спавнить даммика с пасосом (одержимость баньши) и заставлять кастовать его 999 секунд и прогонять даммика, когда тебе нужно, можешь руты кипера бросать: тоже безэффектные + без дамага
включай фантазию

хочется чтобы эта замена происходила не моментально, а через какое то время (на подобии обучения в зданиях),
Юзай однократный таймер (или же если таких юнитов будет очень много, то загони весь этот скот в группу отдельную и сделай пустышную абилку родную им с 10 ЛВЛами и, условно, каждую минуту каждому юниту из группы этой снижай лвл на 1 этой абилки-пустышки периодиком, а когда будет = 1, то морфи в нужного юнита), вейты - зло. Но минус в том, что если это мелкая темка, то на неё целый лишний триггер будет.
ответ
Ладно, раз менее костыльного решения проблемы нет, сделал дополнительное исследование (скрытое), которое триггерно изучается при изучении 3-го левела оригинального улучшения.

23

» WarCraft 3 / Карта на одиночное прохождение

Похожие вопросы:

ответ
koloff, единственно верный вариант - перетащить весь импорт из карт в кампанию. Да, трудозатратно. Да, итоговый вес доставляет. Увы.
Представь длину списка файлов в импорте кампании под конец работы
Поэтому придется думать, что загружать, а что нет. По своему опыту знаю, что вычищать потом неиспользованные данные из импорта - сущий ад. Особенно если к каждой модели по 3-4 текстуры.
И да, музыка в mp3 формате тоже не дает грузится. Онли вав.
Все грузится.
ответ
Самый простой вариант - взять триггеры от сюда - www.hiveworkshop.com/forums/spells-569/anti-cheat-system-1-05c-1...
Там все читы заблочены.

23

» WarCraft 3 / Спелл-каст система

Похожие вопросы:

ответ
Если твоя цель - непрерывание приказа и сохранение инвиза при изучении способности - лови нажатие на спеллбук и переключайвыбор на дамми юнит, тоже со спеллбуком. Давай приказ на горячую клавишу спеллбука, чтобы сымитировать открывание меню у самого героя. После изучения скилла - возвращай героя в выбор.
тут правда есть запары - насколько я знаю ни нажатие на книгу ни нажатие возврата в неё не отлавливаются.
Значит делаем так:
Кнопка изучения способностей - пусть будет веерный бросок с временем подготовки 3 сек например, нам важно чтобы она не активировалась.
Юнит начинает направлять способность
способность = веерный бросок
пауза юнит
приказ юниту отставить
продолжить юнит
выбор - выбрать дамик
кнопка "отмена" у дамика - тоже должна быть способностью. При нажатии способности дамика возвращаем выбор на героя, можно при этом проверить оставшиеся очки способностей, чтобы не переключать, если они ещё не кончились.
Делать всё точно как я написал. Герой не будет выходить из невидимости, но к сожалению приказ всё же будет сбиваться.
Обхода я пока не вижу, остальные способы можно будет абузить.
ответ
Ну, перенеси всё это clawbfs.ucoz.ru/forum/3-2-1 и итемы и две игровые карты с кучей режимов и сотни шапок и т. д. + в 2 раза больше новых идей clawbfs.ucoz.ru/forum/7 clawbfs.ucoz.ru/forum/16-1571-1 clawbfs.ucoz.ru/forum/9 со всеми функциями варкрафта (а их там всё же не так уж и мало) в игру на юнити или ещё куда в один присест, сделай дело доброе.
Бтв, про сбор команды - для продвинутых сущностей нередко исправлять за другими оказывается тяжелее, чем делать самому, важно создать максимально комфортные условия для созидания, вот для чего деньги не лишние, а уж дело и самому можно делать.
И, да, тема-то не про то, надо это или не надо, а про то, как лучше это сделать, я про это и в стартовом сообщении написал.
Я на крайний сам вопрос по варианту 3 проверю и/или будет сделан выбор между третьим вариантом, вторым, каким-то ещё и отказом от Cooldown Reduction, но если кто поможет - спасибо.
ответ
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
ответ
Лимит операций, обычно это беда настигает заядлых гуишников.
На jass обычно нету таких проблем.
Создайте таймер с периодом .00 сек и запускайте им функции инициализации триггеров.
функция типа InitTrig_Имя триггера - это функция инициализации триггера, она вызывается из функции InitCustomTriggers, но если этих вызовов очень много то функция упирается в лимит операций и поток завершается так и не создав все триггеры.

23

» WarCraft 3 / Как проверить класификацию юнита?

Похожие вопросы:

ответ
через if else или свитч конструкцию, или написать свою функцию, которая будет принимать юнита, а возвращать string
типа такого:
function PrintType takes unit u returns string
local string s =""
if IsUnitType(u,UNIT_TYPE_ANCIENT) then
s="ANCIENT"
elseif IsUnitType(u,UNIT_TYPE_ATTACKS_FLYING) then 
s="ATTACKS_FLYING"
endif
return s
endfunction
и добавляешь все свои типы через elseif которые хочешь поймать.... самый простейший вариант и 10 возможных =)

23

» WarCraft 3 / Ошибка в способности

Похожие вопросы:

ответ
проверь настройки A01P, возможно, там кривые данные выше 3-го уровня
ответ
Kanteu, у тебя в описаниях стоит код AUdc, тебе нужно его заменить на равкод твоей способности. Чтобы его узнать, выдели способность и нажми Ctrl+D. Перед двоеточием будет равкод способности.
ответ
МодификаторПал я так понимаю число, а не юнит...
local unit u
local real r
Это конкретно по ошибке... а вообще - не надо смотреть видео от этого человека, он тебя плохому научит... правда. А другим потом придётся тебя переучивать, если ты сам это дело не забросишь
ответ
краш пропал сам собой, после смены варика. КАЧАЙТЕ ДЕФОЛТНЫЙ ВАРИК БЕЗ миксов и всякой дряни!
ответ
ArhiMEN, скинь карту или опиши как должен выглядеть спелл и я сделаю тебе пример в свободное время

23

» WarCraft 3 / Смена названия предмета

Похожие вопросы:

ответ
можно либо заменять юнита, либо химичить с тексттагами(то есть сделать систему имен игровых обьектов на тексттагах), ещё есть функция для смены имени игрока
код
native SetPlayerName            takes player whichPlayer, string name returns nothing
предметам имена изменять нельзя
способности могут быть с таким же успехом удалены, добавлены
этим
native UnitAddAbility               takes unit whichUnit, integer abilityId returns boolean

native UnitRemoveAbility            takes unit whichUnit, integer abilityId returns boolean
подробнее насчет предметов, думаю можно похимичить с кастом велью, устанавливать его
функциями
native          SetItemUserData takes item whichItem, integer data returns nothing

native          GetItemUserData takes item whichItem returns integer
и
функциями
native S2I  takes string s returns integer

native I2S  takes integer i returns string
конвертировать, потом выводить строки на экран через
это
native DisplayTextToPlayer          takes player toPlayer, real x, real y, string message returns nothing
с таким же успехом можно использовать хеш-таблицы, для аттача описания к чему-либо.
Ещё есть вариант, с описанием предметов и способностей в квестах.
В общем без гемора, и написания левых систем никак)
ответ
SweetFox, я бы просто добавлял и удалял способность при получении/потери итема, там оно вроде уже без выкрутасов будет работать)

23

» WarCraft 3 / Эффект строительства зданий

Похожие вопросы:

ответ
"скорости анимации" не нашел
типо такого?
ответ
AlexSan, делаем бд и по событию пишем данные в бд
подробнее в статьях
если хочешь красиво то делай свой вар с картами и эльфийками
ответ
что бы она сразу перешла в режим наведения.. а то выглядит как баг, из-за которого надо нажимать по 2 раза...
Gui -> Force player to use X key
Согласовываешь с хоткеем строительства
======================================
Бафф имеется в виду Бафф или Спецэффект?
Если спецэффект:
DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl",u,"origin"))
Если баф, то возможно будет работать так:
call UnitAddAbility(u, 'buff')

23

» WarCraft 3 / Переменная строка

Похожие вопросы:

ответ
common.j
-- String Utility API

---@param i integer
---@return real
function I2R(i) end

---@param r real
---@return integer
function R2I(r) end

---@param i integer
---@return string
function I2S(i) end

---@param r real
---@return string
function R2S(r) end

---@param r real
---@param width integer
---@param precision integer
---@return string
function R2SW(r, width, precision) end

---@param s string
---@return integer
function S2I(s) end

---@param s string
---@return real
function S2R(s) end

---@param h handle
---@return integer
function GetHandleId(h) end

---@param source string
---@param start integer
---@param ending integer
---@return string
function SubString(source, start, ending) end

---@param s string
---@return integer
function StringLength(s) end

---@param source string
---@param upper boolean
---@return string
function StringCase(source, upper) end

---@param s string
---@return integer
function StringHash(s) end


---@param source string
---@return string
function GetLocalizedString(source) end

---@param source string
---@return integer
function GetLocalizedHotkey(source) end
ответ
ProximityCat, pld файл - это файл, что ты прелоадишь. В нём должен быть вызов только функции ExecuteFunc, которая вызывает другую функцию из карты.
ответ
Eternal soul,
Способ что предложил я - вы формируете БД и далее циклом пробегаетесь по массиву unit_type_string[i] и сравниваете его с вашей строкой. Если сравнение прошло успешно то по индексу unit_type[i] находите нужного юнита. Конечно конвертировать было бы более проффесионально, но это способ тоже будет работать.
ответ
TriggerRegisterVariableEvent
Абсолютно бесполезная шутка, и в луа может не работать. Меняете значение переменной, вызывайте сразу нужные действия.

23

» WarCraft 3 / Проблемы с синхронизацией кэша

Похожие вопросы:

ответ
JackFastGame, просто без синхры ставишь всем героям нужное кол-во опыта, т.к у тебя одна машина и нет живых игроков, ты 1 зритель, остальные все боты и действия синхронизации не требуются для реплея, просто выставление напрямую всем игрокам експы.

23

» WarCraft 3 / Как правильно написать GetUnitState ?

Похожие вопросы:

ответ
У тебя событие в триггере неверное. Ты указал, что юнит атакован, а необходимо событие, что юнит получает урон.
ответ
function PolarProjectionX takes real x, real dist, real angle returns real
    return x + dist * Cos(angle * bj_DEGTORAD)
endfunction

function PolarProjectionY takes real y, real dist, real angle returns real
    return y + dist * Sin(angle * bj_DEGTORAD)
endfunction

function Trig_Hit_Actions takes nothing returns nothing
    local unit caster = GetTriggerUnit()
    local real face = GetUnitFacing(caster)
    local real x = PolarProjectionX(GetUnitX(caster), 100., face)
    local real y = PolarProjectionY(GetUnitY(caster), 100., face)
    local group targets = CreateGroup()
    local unit target
    call GroupEnumUnitsInRange(targets, x, y, 100., null)
    set target = FindClosestToXY(targets, x, y)
    if target != null then
        call UnitDamageTargetBJ(caster, target, 100., ATTACK_TYPE_CHAOS, DAMAGE_TYPE_UNIVERSAL)
        set target = null
    endif
    set caster = null
    call DestroyGroup(targets)
    set targets = null
endfunction
DopaMine, у тебя нет вызова FindClosestUnitXY.
ответ
VinerX, посмотри гуи функцию "пропустить остальные действия" по факту это слово "return" в коде, то есть после ретурна ты никак не поставишь set newUnit = null, и правильно это делать после set bj_lastReplacedUnit = newUnit, а возвращать не newUnit, а bj_lastReplacedUnit, вот код если непонятно
set bj_lastReplacedUnit = newUnit
set newUnit = null
set oldUnit = null
set indexItem = null
return bj_lastReplacedUnit

23

» WarCraft 3 / Не открывается кампания и карта

Похожие вопросы:

ответ
~8gabriel8:
Не знаю почему, но после нескольких попыток открыть карту в mpq-редакторе, файлы текстур появились, я их заменил и карта открылась.
ответ
Скорее всего какая то ошибка в Jass коде.
ответ
Нельзя. Потому что даже в твоей сугубо триггерной карте, когда запускается команда на исполнение все конвертируется в jass/( Когда ты играешь или проверяешь карту)
Триггер . лишь графическая оболочка, как бы кубики на которых написаны буквы, но все-равно все происходит на jasse ( уже иногда на lua)
Короче нельзя. скачивай jngp и учи хотя бы простые джассовые команды.
Хотя даже зная его взломанная карта часто выкладывает огромный набор проограмного кода без разделения где конкретный текстовый триггер инициализации или определенного дейсвтия.
ответ
У меня была такая проблема хрен знает сколько лет назад. Но она была один раз, возможно тоже из-за сбоя

23

» WarCraft 3 / Свой набор звуков

Похожие вопросы:

ответ
Да чего угодно, хоть дефолтным проигрывателем виндовс.
А так есть adobe audacity и аналоги, для записи и редактирования звуков, а так же сохранении их в нужный формат, игра использует для фраз юнитов звуки формата *.wav, хотя и от *.mp3 файлов не откажиться.
ответ
Закрыто.
ответ
Мб озвучки просто отменили
Учитывая, что под контроль игрока эти юниты никогда не давались, разумно решили - не самое важное
ответ
Да тут недавно статейка была, поищи на сайте.
ответ
Ошибаетесь, дело и в звуках, и в WC3. Просто WC3 проигрывает звуки не выше определённой частоты, это обнаружил aws, когда импортировал звуки в WC3.

23

» WarCraft 3 / Иконка Тралла

Ваш ресурс не прошёл автомодерацию. Пожалуйста, внесите исправления или ожидайте проверки модератором.
Причина
Число вставленных изображений: 0, а требуется не менее 1
Your resource has not passed automoderation. Please make corrections or wait for the moderator to check.
Reason
Count of inserted images is: 0, but required not less than 1
// CID3
23

» WarCraft 3 / Решения проблемы с Картой

Похожие вопросы:

ответ
JGNP используй
ответ
Viktor2, а ты реально импортировал все текстуры (в кол-ве 21шт ) в карту? Если хотя бы одну забыл -модель не будет отображаться.
ответ
На сайте Hive на карте написано текущая версия.
Скорее всего карта для последних патчей, где есть новые нативки.
ответ
~8gabriel8:
Скорее всего вылет в главное меню обусловлен не исполняемостью кода. Часто это может быть по причине того, что в пути к карте есть кириллица, например, когда карта на Рабочем столе или в папке Загрузки. В связи с этим уже давно почти все карты держу в корне диска C:\.
ответ
XGM Bot:
Похожие вопросы:

ответ
путь к текстуре прописывать правильно надо
текстура должна хранится в new.mix без подпапок
ответ
либо юзай мдлвиз как все белые люди
ответ
У модели не выбрано текстурка которая отвечает за ...я забыл как это называется. Аля погребального огня или что-то того. Оказалось трём материалам не дали текстур, я поправил. Сначала проверь работает ли в игре, а потом смело меняй с заменой у себя в папке.
ответ
прочитать правила импорта текстур, которые пишут рядом с моделью
чаще всего нужно удалить все строки в импорте, чтобы осталось TextureName.blp
ответ
Держи. Там были использованы несколько лишних текстур (я так понимаю из вова).
Один вопрос, тупа интересна - что ты делал? "Чего только не делал, однако всё об стенку горох."


23

» WarCraft 3 / Функция не возвращает unit

Похожие вопросы:

ответ
Написать return false
ответ
bj убери для начала
[code]
function ret takes unit m,unit u returns nothing
local location lm=GetUnitLoc(m)
local location lu=GetUnitLoc(u)
local real dx=GetLocationX(lm) - GetLocationX(lu)
local real dy=GetLocationY(lm) - GetLocationY(lu)
local real r=SquareRoot(dx*dx+dy*dy)
if r>=1000 then
call IssuePointOrderLoc( u, "move", lm )
endif
call RemoveLocation(lm)
call RemoveLocation(lu)
endfunction
[/code]
m-мама
u-юнит
ответ
На хайве получил ответ, надо было писать evaluate
ответ
Независимо от того SaveReal там или SaveUnitHandle, ты записываешь значения в одну и ту же таблицу.
Ты просто SaveReal(h, id, 0, x_c) перезаписываешь этим - SaveUnitHandle(h, id, 0, u_c) и этим - SaveEffectHandle(h, id, 0, e)
ответ
зачем внешние очишаеш структуру?
Порой это нужно.

Замени GetTriggerUnit() на GetSpellAbilityUnit().
ApaxHoqpuJL:
call SetUnitAnimationReverseFollowed(u, 3, 1, 1, true, FollowUpFunc.AnimationTimerFollowup, animData)
А это что такое? Что за FollowUpFunc.AnimationTimerFollowup?

23

» WarCraft 3 / Не меняется рельеф

Похожие вопросы:

ответ
Меньше чем -128 ты ландшафт НИКАК ВООБЩЕ НЕ опустишь (хотя, можешь перепилить движок варика).
ответ
сразу видно, человек с большим опытом редактора
ответ
текстуры склона заменяются путями ReplaceableTextures\Cliff\Cliff0.blp и ReplaceableTextures\Cliff\Cliff1.blp
ответ
~8gabriel8:
А в игре тоже поменялось или только в редакторе?
ответ
+- GetLocationZ(Ltargetpoint)

23

» WarCraft 3 / Урон и заклинания при помощи триггеров

Похожие вопросы:

ответ
юнит получает урон
1 ответ на 2 вопроса
ответ
События в помощь. Почитайте про событийно-ориентированные языки программирования. Jass является таким
ответ
Sicre, только на 1 вопрос будем отвечать в этой теме, у тебя за убийство все пачки или за каждого юнита отдельный дроп?
Если за каждого, то по событию юнит определённого типа умирает, создвай предмет в точке смерти, можно также прописать шанс.
Если же ты работаешь с группой и даёшь общую награду за смерть группы, тогда надо группу создать, обозвать её например (пауки у фантана), добавить туда юнитов, и отслеживать смерть всей группы, ну и так будет каждый раз собственно